<p>There are several reasons for a method not to have a method body:</p>
<ul>
  <li> It is an unintentional omission, and should be fixed to prevent an unexpected behavior in production. </li>
  <li> It is not yet, or never will be, supported. In this case an <code>UnsupportedOperationException</code> should be thrown. </li>
  <li> The method is an intentionally-blank override. In this case a nested comment should explain the reason for the blank override. </li>
</ul>
<h2>Noncompliant Code Example</h2>
<pre>
public void doSomething() {
}

public void doSomethingElse() {
}
</pre>
<h2>Compliant Solution</h2>
<pre>
@Override
public void doSomething() {
  // Do nothing because of X and Y.
}

@Override
public void doSomethingElse() {
  throw new UnsupportedOperationException();
}
</pre>
<h2>Exceptions</h2>
<p>Default (no-argument) constructors are ignored when there are other constructors in the class, as are empty methods in abstract classes.</p>
<pre>
public abstract class Animal {
  void speak() {  // default implementation ignored
  }
}
</pre>

